Setup

library(repro)
# # load packages from yaml header
# automate_load_packages()
# # include external scripts
# automate_load_scripts()

# load data
data_ambroise_full   <- haven::read_sav("Enquete_Ambroise.sav")

pacman::p_load(papaja, tinylabels, apaTables, haven, ggplot2,  tidyverse, gtsummary, car, GGally, MASS, matrixStats, rcompanion, moments, utils, sjPlot, interactions, kableExtra)

sessio = sessionInfo(); #opts_chunk$set(echo = F, message=F, warning=F) # set echo F for all

This file was automatically created via the Repro package (version 0.1.0) using R version 4.0.1 (2020-06-06)

options(scipen = 666, warn=-1, contrasts=c("contr.sum","contr.poly"), knitr.kable.NA = '')  #remove scientific notation # remove warnings #set contrasts to sum ! 
set.seed(666) #set random seed

# panderOptions('knitr.auto.asis', FALSE) #remove auto styling

# Look at R/clean.R (listed in the YAML) which does all the preprocessing for more info


# If you are unsure weather or not you have `git` `make` & `docker`.
# check_git()
# check_make()
# check_docker()

Introduction

Blabla

Demographics

base[c("Age", "Gender", "Profession")] %>%  tbl_summary(statistic = list(all_continuous() ~ "{mean} ({sd})", all_categorical() ~ "{n} / {N} ({p}%)"),)  %>% modify_caption("**Table 1. Demographics **") %>%
  bold_labels()
**Table 1. Demographics **
Characteristic N = 3031
Age 21.7 (4.4)
Gender
Homme 56 / 303 (18%)
Femme 244 / 303 (81%)
Autre/NA 3 / 303 (1.0%)
Profession
Etudiant.e 298 / 303 (98%)
Actif.ve 3 / 303 (1.0%)
Les deux 2 / 303 (0.7%)

1 Mean (SD); n / N (%)

base[c("Decision Mode")] %>%  tbl_summary(statistic = list(all_continuous() ~ "{mean} ({sd})", all_categorical() ~ "{n} / {N} ({p}%)"),)   %>% modify_caption("**Table 2. Decision Mode **") %>%
  bold_labels()
**Table 2. Decision Mode **
Characteristic N = 3031
Decision Mode
Affectif 32 / 303 (11%)
Les deux 208 / 303 (69%)
Cognitif 63 / 303 (21%)

1 n / N (%)

\(~\) \(~\)

base_clean[c("Age", "Gender", "Profession")] %>%  tbl_summary(statistic = list(all_continuous() ~ "{mean} ({sd})", all_categorical() ~ "{n} / {N} ({p}%)"),)  %>% modify_caption("**Table 3. Demographics after cleaning**") %>%
  bold_labels()
Table 3. Demographics after cleaning
Characteristic N = 2961
Age 21.8 (4.3)
Gender
Homme 55 / 296 (19%)
Femme 239 / 296 (81%)
Autre/NA 2 / 296 (0.7%)
Profession
Etudiant.e 291 / 296 (98%)
Actif.ve 3 / 296 (1.0%)
Les deux 2 / 296 (0.7%)

1 Mean (SD); n / N (%)

base_clean[c("Decision Mode")] %>%  tbl_summary(statistic = list(all_continuous() ~ "{mean} ({sd})", all_categorical() ~ "{n} / {N} ({p}%)"),)   %>% modify_caption("**Table 4. Decision Mode after cleaning**") %>%
  bold_labels()
Table 4. Decision Mode after cleaning
Characteristic N = 2961
Decision Mode
Affectif 32 / 296 (11%)
Les deux 202 / 296 (68%)
Cognitif 62 / 296 (21%)

1 n / N (%)

\(~\) \(~\)

Statistics

\(~\) \(~\)

Price

base_price = base_clean #no huge outliers, see appendix

final_price = lm(Price ~ Priming*Product*score + Age + Decision_mode,  data = base_price)

apa_lm <- apa_print(anova(final_price))
apa_table(apa_lm$table,  caption = "Anova table for Price.")
(#tab:lm Price)
Anova table for Price.
Effect \(\hat{\eta}^2_G\) 90% CI \(F\) \(\mathit{df}\) \(\mathit{df}_{\mathrm{res}}\) \(p\)
Priming .001 [.000, .017] 0.35 1 285 .553
Product .009 [.000, .037] 2.70 1 285 .102
Score .001 [.000, .017] 0.37 1 285 .546
Age .007 [.000, .032] 1.99 1 285 .160
Decision mode .003 [.000, .017] 0.44 2 285 .643
Priming \(\times\) Product .006 [.000, .030] 1.79 1 285 .182
Priming \(\times\) Score .014 [.000, .044] 3.92 1 285 .049
Product \(\times\) Score .001 [.000, .015] 0.24 1 285 .624
Priming \(\times\) Product \(\times\) Score .009 [.000, .035] 2.49 1 285 .116
plot_model(final_price)

interactions::cat_plot(final_price, pred = Priming, modx = Product, interval = TRUE, plot.points = T, point.alpha =0.3, pred.labels = c("Computational","Affective"), modx.labels = c("A+","A++"), errorbar.width = 0.4, y.label = "Price Evaluation")   

interactions::interact_plot(final_price, pred = score, modx = Priming, interval = TRUE, plot.points = T, modx.labels = c("Computational","Affective"), point.alpha =0.3, x.label = "Affective Score towards climate change", y.label = "Price Evaluation")    

interactions::interact_plot(final_price, pred = score, modx = Priming, interval = TRUE, plot.points = F, modx.labels = c("Computational","Affective"), point.alpha =0.3, x.label = "Affective Score towards climate change", y.label = "Price Evaluation")    

\(~\) \(~\)

Example for reporting :

The priming condition (\(F(1, 285) = 0.35\), \(p = .553\), \(\hat{\eta}^2_G = .001\), 90% CI \([.000, .017]\)) and the affective score towards climate change (\(F(1, 285) = 0.37\), \(p = .546\), \(\hat{\eta}^2_G = .001\), 90% CI \([.000, .017]\)) did not affect price evaluation by themselves. However, the effect of affective score towards climate change on the price evalution slightly differed by priming condition, \(F(1, 285) = 3.92\), \(p = .049\), \(\hat{\eta}^2_G = .014\), 90% CI \([.000, .044]\).

\(~\)

However it is important to note the very small effect size \(\hat{\eta}^2_G = .014\) and that the confidence intervals of the effect size includes 0 90% CI \([.000, .044]\) . \(~\)

Grand biais vers 0 avec les positive affect scale. Resultat pas très interpretable donc… Mais je laisse les deux graphs au cas ou.

\(~\) \(~\)

Probability to buy

base_buy = filter(base_clean, id %notin% c("13804")) #remove huge outliers, see appendix


final_buy = lm(Buy ~ Priming*Product*score + Age + Decision_mode,  data = base_buy)   

apa_lm <- apa_print(anova(final_buy))
apa_table(apa_lm$table,  caption = "Anova table for Probability to buy.")
(#tab:lm Buy)
Anova table for Probability to buy.
Effect \(\hat{\eta}^2_G\) 90% CI \(F\) \(\mathit{df}\) \(\mathit{df}_{\mathrm{res}}\) \(p\)
Priming .000 [.000, .010] 0.06 1 284 .809
Product .037 [.010, .080] 11.01 1 284 .001
Score .001 [.000, .013] 0.15 1 284 .701
Age .034 [.008, .075] 9.88 1 284 .002
Decision mode .000 [.000, .000] 0.04 2 284 .965
Priming \(\times\) Product .000 [.000, .011] 0.08 1 284 .773
Priming \(\times\) Score .010 [.000, .037] 2.74 1 284 .099
Product \(\times\) Score .000 [.000, .012] 0.12 1 284 .728
Priming \(\times\) Product \(\times\) Score .007 [.000, .033] 2.12 1 284 .147
sjPlot::plot_model(final_buy)

interactions::cat_plot(final_buy, pred = Product, interval = TRUE, plot.points = T, point.alpha =0.3, pred.labels = c("A+","A++"), errorbar.width = 0.4, y.label = "Probability to buy")   

sjPlot::plot_model(final_buy, type = "pred", show.data = T)[4]

interactions::cat_plot(final_buy, pred = Priming, modx = Product, interval = TRUE, plot.points = T, point.alpha =0.3, pred.labels = c("Computational","Affective"), modx.labels = c("A+","A++"), errorbar.width = 0.4, y.label = "Probability to buy")   

\(~\) \(~\)

Reccomendation

base_recco = base_clean #no huge outliers, see appendix

final_recco = lm(Reccomend ~ Priming*Product*score + Decision_mode + Age,  data = base_recco)
      

apa_lm <- apa_print(anova(final_recco))
apa_table(apa_lm$table,  caption = "Anova table for Reccomendation.")
(#tab:lm Recco)
Anova table for Reccomendation.
Effect \(\hat{\eta}^2_G\) 90% CI \(F\) \(\mathit{df}\) \(\mathit{df}_{\mathrm{res}}\) \(p\)
Priming .002 [.000, .019] 0.54 1 285 .461
Product .087 [.042, .143] 27.31 1 285 < .001
Score .002 [.000, .019] 0.54 1 285 .463
Decision mode .001 [.000, .002] 0.12 2 285 .885
Age .008 [.000, .035] 2.40 1 285 .122
Priming \(\times\) Product .000 [.000, .000] 0.00 1 285 .982
Priming \(\times\) Score .001 [.000, .017] 0.38 1 285 .537
Product \(\times\) Score .004 [.000, .026] 1.25 1 285 .265
Priming \(\times\) Product \(\times\) Score .007 [.000, .032] 2.04 1 285 .154
plot_model(final_recco)

interactions::cat_plot(final_recco, pred = Product, interval = TRUE, plot.points = T, point.alpha =0.3, pred.labels = c("A+","A++"), errorbar.width = 0.4, y.label = "Reccomendation to buy")  

# sjPlot::plot_model(final_recco, type = "pred", show.data = T)[5]

interactions::cat_plot(final_recco, pred = Priming, modx = Product, interval = TRUE, plot.points = T, point.alpha =0.3, pred.labels = c("Computational","Affective"), modx.labels = c("A+","A++"), errorbar.width = 0.4, y.label = "Reccomendation to buy")  

# interactions::interact_plot(final_recco, pred = negatif_affect, modx = Product, interval = TRUE, plot.points = T, point.alpha =0.3, modx.labels = c("A+","A++"), x.label = "Negative affect towards climate change", y.label = "Reccomendation to buy")  
# 
# interactions::interact_plot(final_recco, pred = negatif_affect, modx = Product, interval = TRUE, plot.points = F, point.alpha =0.3, modx.labels = c("A+","A++"), x.label = "Negative affect towards climate change", y.label = "Reccomendation to buy") 

\(~\) \(~\)

Ecologic Evaluation

base_eco = filter(base_clean, id %notin% c("13594", "11200", "13804", "12529", "11017")) #remove huge outliers, see appendix

final_eco = lm(Ecolo_Eval ~ Priming*Product*score  + Age + Decision_mode,  data = base_eco)

apa_lm <- apa_print(anova(final_eco))
apa_table(apa_lm$table, caption = "Anova table for Ecological evaluation")
(#tab:lm Ecolo_Eval)
Anova table for Ecological evaluation
Effect \(\hat{\eta}^2_G\) 90% CI \(F\) \(\mathit{df}\) \(\mathit{df}_{\mathrm{res}}\) \(p\)
Priming .000 [.000, .000] 0.00 1 280 .961
Product .215 [.149, .283] 76.68 1 280 < .001
Score .001 [.000, .016] 0.26 1 280 .614
Age .000 [.000, .006] 0.02 1 280 .886
Decision mode .015 [.000, .042] 2.11 2 280 .123
Priming \(\times\) Product .003 [.000, .022] 0.75 1 280 .386
Priming \(\times\) Score .010 [.000, .038] 2.82 1 280 .094
Product \(\times\) Score .000 [.000, .000] 0.00 1 280 > .999
Priming \(\times\) Product \(\times\) Score .001 [.000, .016] 0.29 1 280 .594
plot_model(final_eco)

interactions::cat_plot(final_eco, pred = Product, interval = TRUE, plot.points = T, point.alpha =0.3, pred.labels = c("A+","A++"), errorbar.width = 0.4, y.label = "Ecological Evaluation") 

interactions::cat_plot(final_eco, pred = Priming, modx = Product, interval = TRUE, plot.points = T, point.alpha =0.3, pred.labels = c("Computational","Affective"), modx.labels = c("A+","A++"), errorbar.width = 0.4, y.label = "Ecological Evaluation") 

\(~\) \(~\)

Appendix

\(~\) \(~\)

Score of Affect towards climate change

\(~\) score = -negatif_affect \(~\) score = score+positive_affect

\(~\) \(~\)

Plot All

base_clean %>%
   keep(is.numeric) %>%
   ggpairs()

\(~\) \(~\)

Check variables densities -> Positive and negative are not really good: to skewed. Score is quite better.¨

\(~\) \(~\)

# base_priceA = dplyr::filter(base_price, Product == "A++")
# 
# final_priceA = lm(Price ~ Priming*Decision_mode + Age,  data = base_priceA)
# 
# apa_lm <- apa_print(anova(final_priceA))
# apa_table(apa_lm$table,  caption = "Anova table for Price with only A++ product.")
# plot_model(final_priceA)
# 
# interactions::cat_plot(final_priceA, pred = Priming, interval = TRUE, plot.points = T, point.alpha =0.3, pred.labels = c("Computational","Affective"), errorbar.width = 0.4, y.label = "Price Evaluation")    

\(~\) \(~\)

# base_buyA = filter(base_buy, Product == "A++")
# 
# final_buyA = lm(Buy ~ Priming*Decision_mode + Age ,  data = base_buyA)
# 
# apa_lm <- apa_print(anova(final_buyA))
# apa_table(apa_lm$table,  caption = "Anova table for Probability to buy only A++ product.")
# plot_model(final_buyA)
# 
# interactions::cat_plot(final_buyA, pred = Priming, interval = TRUE, plot.points = T, point.alpha =0.3, pred.labels = c("Computational","Affective"), errorbar.width = 0.4, y.label = "Probability to buy")   

\(~\) \(~\)

# base_reccoA = filter(base_recco, Product == "A++")
# 
# final_reccoA = lm(Reccomend ~ Priming*Decision_mode + Age,  data = base_reccoA)
# 
# apa_lm <- apa_print(anova(final_reccoA))
# apa_table(apa_lm$table,  caption = "Anova table for Reccomendation to buy only A++ product.")
# plot_model(final_reccoA)
# 
# interactions::cat_plot(final_reccoA, pred = Priming, interval = TRUE, plot.points = T, point.alpha =0.3, pred.labels = c("Computational","Affective"), errorbar.width = 0.4, y.label = "Reccomendation to buy") 

\(~\) \(~\)

# base_ecoA = filter(base_eco, Product == "A++")
# 
# 
# final_ecoA = lm(Ecolo_Eval ~ Priming*Decision_mode  + Age,  data = base_ecoA)
# 
# apa_lm <- apa_print(anova(final_ecoA))
# apa_table(apa_lm$table, caption = "Anova table for Ecological evaluation only A++ product")
# plot_model(final_ecoA)
# 
# interactions::cat_plot(final_ecoA, pred = Priming, interval = TRUE, plot.points = T, point.alpha =0.3, pred.labels = c("Computational","Affective"), errorbar.width = 0.4, y.label = "Price Evaluation")    

\(~\) \(~\)

Correlation between affects towars climate change

\(~\) \(~\)

Test frequencies between priming groups (Positive affect)

Summary statistics
Characteristic 1, N = 1701 2, N = 591 3, N = 251 4, N = 241 5, N = 161 6, N = 11 7, N = 11 p-value2
Priming 0.2
0 89 (52%) 33 (56%) 13 (52%) 9 (38%) 4 (25%) 1 (100%) 1 (100%)
1 81 (48%) 26 (44%) 12 (48%) 15 (62%) 12 (75%) 0 (0%) 0 (0%)

1 n (%)

2 Fisher's exact test

\(~\) \(~\)

Test frequencies between priming groups (Negative affect)

Summary statistics
Characteristic 1, N = 101 2, N = 91 3, N = 111 4, N = 321 5, N = 611 6, N = 991 7, N = 741 p-value2
Priming 0.2
0 1 (10%) 6 (67%) 5 (45%) 18 (56%) 34 (56%) 47 (47%) 39 (53%)
1 9 (90%) 3 (33%) 6 (55%) 14 (44%) 27 (44%) 52 (53%) 35 (47%)

1 n (%)

2 Fisher's exact test

\(~\) \(~\)

Logistic regression to predict priming groups (Positive affect)

(#tab:glm1)
**
Predictor \(b\) 95% CI \(z\) \(p\)
2 Positive affect 0.14 [-0.04, 0.33] 1.53 .125

\(~\) \(~\)

\(~\) \(~\)

Logistic regression to predict priming groups (Negative affect)

(#tab:glm2)
**
Predictor \(b\) 95% CI \(z\) \(p\)
2 Negatif affect -0.07 [-0.22, 0.09] -0.87 .386

\(~\) \(~\)

\(~\) \(~\)

Logistic regression to predict priming groups (Affective Score)

(#tab:glm3)
**
Predictor \(b\) 95% CI \(z\) \(p\)
2 Score 0.08 [-0.03, 0.18] 1.46 .144

\(~\) \(~\)

\(~\) \(~\)

Visual check normality

plotNormalHistogram(base_clean$Price, main = "Price", sub = paste("skewness =", skewness(base_clean$Price, na.rm = TRUE))) 


# print("Check price density by product")
# densityPlot(base_clean$Price, g = base_clean$Product) # by product

plotNormalHistogram(base_clean$Reccomend, main = "Reccomendation", sub = paste("skewness =", round(skewness(base_clean$Reccomend, na.rm = TRUE)),2))



plotNormalHistogram(base_clean$Buy, main = "Probability to buy", sub = 
                      paste("skewness =", round(skewness(base_clean$Buy, na.rm = TRUE),2)))


plotNormalHistogram(base_clean$Ecolo_Eval, main = "Ecologic Evaluation", sub =
                      paste("skewness =", round(skewness(base_clean$Ecolo_Eval, na.rm = TRUE),2)))

\(~\) \(~\)

Model selection for price

Stepwise Model Path Analysis of Deviance Table
Initial Model:
Price ~ Priming * Product * negatif_affect + Priming * Product *
positive_affect + Priming * Product * Decision_mode + Priming *
Product * Age
Final Model:
Price ~ Priming + Product + negatif_affect + positive_affect +
Priming:Product + Priming:negatif_affect + Product:negatif_affect +
Priming:positive_affect + Product:positive_affect + Priming:Product:negatif_affect
Step Df Deviance Resid. Df Resid. Dev AIC
272 1492.897 526.9619
  • Priming:Product:Decision_mode
2 1.2988527 274 1494.196 523.2193
  • Priming:Decision_mode
2 1.1771062 276 1495.373 519.4524
  • Product:Decision_mode
2 2.1924218 278 1497.566 515.8860
  • Decision_mode
2 5.3835937 280 1502.949 512.9482
  • Priming:Product:Age
1 0.0454730 281 1502.995 510.9572
  • Product:Age
1 0.1449535 282 1503.140 508.9857
  • Priming:Product:positive_affect
1 1.2190939 283 1504.359 507.2257
  • Priming:Age
1 1.8189887 284 1506.178 505.5834
  • Age
1 3.3639817 285 1509.542 504.2438

\(~\) \(~\)

Price: Diagnostics Plots for linear model

\(~\) \(~\)

Model selection for Probality to buy

Stepwise Model Path Analysis of Deviance Table
Initial Model:
Buy ~ Priming * Product * negatif_affect + Priming * Product *
positive_affect + Priming * Product * Decision_mode + Priming *
Product * Age
Final Model:
Buy ~ Priming + Product + negatif_affect + Age + Priming:negatif_affect +
Product:negatif_affect
Step Df Deviance Resid. Df Resid. Dev AIC
272 599.1365 256.7185
  • Priming:Product:Decision_mode
2 0.5872826 274 599.7238 253.0085
  • Product:Decision_mode
2 0.8112811 276 600.5351 249.4086
  • Priming:Product:positive_affect
1 0.4022296 277 600.9373 247.6068
  • Priming:Product:Age
1 1.5140058 278 602.4513 246.3516
  • Product:Age
1 0.0234825 279 602.4748 244.3632
  • Priming:Age
1 0.9743727 280 603.4492 242.8415
  • Priming:positive_affect
1 1.9725500 281 605.4217 241.8075
  • Priming:Product:negatif_affect
1 2.1206115 282 607.5423 240.8425
  • Priming:Product
1 1.6186208 283 609.1610 239.6300
  • Product:positive_affect
1 2.2333884 284 611.3944 238.7133
  • positive_affect
1 0.8585097 285 612.2529 237.1286
  • Priming:Decision_mode
2 6.9999567 287 619.2528 236.4936
  • Decision_mode
2 1.1043737 289 620.3572 233.0210

\(~\) \(~\)

Probability to buy: Diagnostics Plots for linear model

\(~\) \(~\)

Model selection for Reccomendation

Stepwise Model Path Analysis of Deviance Table
Initial Model:
Reccomend ~ Priming * Product * negatif_affect + Priming * Product *
positive_affect + Priming * Product * Decision_mode + Priming *
Product * Age
Final Model:
Reccomend ~ Priming + Product + negatif_affect + positive_affect +
Age + Priming:Product + Product:negatif_affect + Priming:positive_affect +
Product:positive_affect + Priming:Age + Product:Age + Priming:Product:positive_affect +
Priming:Product:Age
Step Df Deviance Resid. Df Resid. Dev AIC
272 734.5904 317.0503
  • Priming:Product:negatif_affect
1 0.9862800 273 735.5767 315.4474
  • Priming:negatif_affect
1 0.0347883 274 735.6115 313.4614
  • Priming:Product:Decision_mode
2 9.6592597 276 745.2707 313.3229
  • Priming:Decision_mode
2 1.4877211 278 746.7585 309.9132
  • Product:Decision_mode
2 2.5010516 280 749.2595 306.9029
  • Decision_mode
2 0.3121104 282 749.5716 303.0262

\(~\) \(~\)

Reccomendation: Diagnostics Plots for linear model AFTER

\(~\) \(~\)

Model selection for Ecologic Evaluation

Stepwise Model Path Analysis of Deviance Table
Initial Model:
Ecolo_Eval ~ Priming * Product * negatif_affect + Priming * Product *
positive_affect + Priming * Product * Decision_mode + Priming *
Product * Age
Final Model:
Ecolo_Eval ~ Priming + Product + negatif_affect + positive_affect +
Decision_mode + Age + Priming:Product + Product:negatif_affect +
Priming:positive_affect + Product:positive_affect + Priming:Decision_mode +
Product:Decision_mode + Priming:Age + Product:Age + Priming:Product:Decision_mode +
Priming:Product:Age
Step Df Deviance Resid. Df Resid. Dev AIC
272 358.0852 104.36179
  • Priming:Product:positive_affect
1 0.1295729 273 358.2148 102.46888
  • Priming:Product:negatif_affect
1 0.3551773 274 358.5699 100.76222
  • Priming:negatif_affect
1 0.0511166 275 358.6210 98.80441

\(~\) \(~\)

Ecologic Evaluation: Diagnostics Plots for linear model AFTER

\(~\) \(~\)

Hollistic (Positive) Affect Towards Climate Change
plotNormalHistogram(base_clean$positive_affect, main = "Positive Affect", sub = paste("skewness =", skewness(base_clean$positive_affect, na.rm = TRUE))) 

\(~\) \(~\)

We see a strong right skew of the dristribution.

\(~\) \(~\)

Hollistic (Negative) Affect Towards Climate Change
plotNormalHistogram(base_clean$negatif_affect, main = "Negative Affect", sub = paste("skewness =", skewness(base_clean$negatif_affect, na.rm = TRUE))) 

\(~\) \(~\)

We see a slight left skew of the dristribution.

report::report_packages()
##   - repro (version 0.1.0; Aaron Peikert, Andreas Brandmaier and Caspar van Lissa, 2021)
##   - papaja (version 0.1.0.9997; Aust et al., 2020)
##   - GGally (version 2.1.2; Barret Schloerke et al., 2021)
##   - tinylabels (version 0.2.3; Barth, 2022)
##   - apaTables (version 2.0.8; David Stanley, 2021)
##   - ggplot2 (version 3.3.5; Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2016.)
##   - stringr (version 1.4.0; Hadley Wickham, 2019)
##   - forcats (version 0.5.1; Hadley Wickham, 2021)
##   - haven (version 2.4.3; Hadley Wickham and Evan Miller, 2021)
##   - tidyr (version 1.2.0; Hadley Wickham and Maximilian Girlich, 2022)
##   - readr (version 2.1.1; Hadley Wickham, Jim Hester and Jennifer Bryan, 2021)
##   - dplyr (version 1.0.7; Hadley Wickham et al., 2021)
##   - kableExtra (version 1.3.4; Hao Zhu, 2021)
##   - matrixStats (version 0.61.0; Henrik Bengtsson, 2021)
##   - car (version 3.0.12; John Fox and Sanford Weisberg, 2019)
##   - carData (version 3.0.5; John Fox, Sanford Weisberg and Brad Price, 2022)
##   - tibble (version 3.1.6; Kirill Müller and Hadley Wickham, 2021)
##   - purrr (version 0.3.4; Lionel Henry and Hadley Wickham, 2020)
##   - interactions (version 1.1.5; Long JA, 2019)
##   - sjPlot (version 2.8.10; Lüdecke D, 2021)
##   - moments (version 0.14; Lukasz Komsta and Frederick Novomestky, 2015)
##   - R (version 4.0.1; R Core Team, 2020)
##   - rcompanion (version 2.4.1; Salvatore Mangiafico, 2021)
##   - gtsummary (version 1.5.0; Sjoberg DD, Whiting K, Curry M, Lavery JA, Larmarange Reproducible summary tables with the gtsummary package. The R Journal 2021;13:570–80. https://doi.org/10.32614/RJ-2021-053.)
##   - MASS (version 7.3.51.6; Venables et al., 2002)
##   - tidyverse (version 1.3.1; Wickham et al., 2019)